/**
 * \file CFindAvanceFrm.h
 * \author Corentin Le Bail
 * \date 2009-2012
 * \brief Fichier de déclaration de la class CFindAvanceFrm
 */
//------------------------------------------------------------------------------
#ifndef __CFINDAVANCEFRM_H__
#define __CFINDAVANCEFRM_H__
//------------------------------------------------------------------------------
#include <QDialog>
#include <QStringList>
#include <QLabel>
#include <QCheckBox>
#include <QComboBox>
#include <QLineEdit>
#include "ui_CFindAvanceFrm.h"
//------------------------------------------------------------------------------
#define HIGHT_CTRL					24 /**< La hauteur d'un contrôle */
#define HIGHT_INTER					6  /**< La taille de l'interval entre deux contrôles */
#define HIGHT						(HIGHT_CTRL+HIGHT_INTER) /**< La taille totale d'un contrôle */
//------------------------------------------------------------------------------
/**
 * \class CFindAvanceFrm CFindAvanceFrm.h "CFindAvanceFrm.h"
 * \brief Classe de la fenêtre de recherche avancé.
 */
class CFindAvanceFrm : public QDialog, private Ui::FindAvanceFrm
{
	Q_OBJECT
	public:
		/**
		 * \fn CFindAvanceFrm(QString table, bool liaison, QWidget *parent = 0)
		 * \brief Constructeur
		 * \param[in] table Nom de la table
		 * \param[in] liaison Les tables doivent elles être ajoutés ?
		 * \param[in] parent Référence vers un objet parent
		 */
		CFindAvanceFrm(QString table, bool liaison, QWidget *parent = 0);
		/**
		 * \fn QString getResult(void)
		 * \return Le résultat de la recherche
		 */
		QString getResult(void) { return _result; }
		/**
		 * \fn QString getRequete(void)
		 * \return La requête SQL
		 */
		QString getRequete(void) { return _requete; }
		/**
		 * \fn QString getRequeteHum(void)
		 * \return La requête SQL lisible par un humain
		 */
		QString getRequeteHum(void) { return _requeteHum; }
		/**
		 * \fn QStringList * getHeader(void)
		 * \return Une référence vers un objet liste des noms des champs
		 */
		QStringList * getHeader(void) { return _header; }
	private:
		QString _table;
		QStringList *listChamp;
		QStringList *_header;
		QString _result;
		QString _requete;
		QString _requeteHum;
		int _nbChamp;
		QCheckBox **chkActif;
		QComboBox **cbCombinaison;
		QLineEdit **leParO;
		QLabel **lblChamp;
		QComboBox **cbOperation;
		QLineEdit **leValeur;
		QLineEdit **leParF;
		
		void loadChamps(bool liaisons=false);
		void fillOperation(QComboBox *cb);
		void deleteChamps(void);
	private slots:
		void accept(void);
		void on_chkLiaison_clicked(bool checked);
		void on_chkAll_stateChanged(int state);
};
//------------------------------------------------------------------------------
#endif //__CFINDAVANCEFRM_H__
//------------------------------------------------------------------------------